﻿using System;

namespace Sanjeet.FastCopy.FileCopyLogic.Design1
{
    /// <summary>
    /// 
    /// </summary>
    public interface IAsyncable
    {
        /// <summary>
        /// 
        /// </summary>
        void StartAsync();

        /// <summary>
        /// 
        /// </summary>
        /// <param name="data"></param>
        void StartAsync(IAsyncableData data);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="data"></param>
        event EventHandler<EventArgs> ProgressChanged;

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnProgressChanged(object sender, EventArgs e);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void OnCompleted(object sender, EventArgs e);

        /// <summary>
        /// 
        /// </summary>
        /// <param name="data"></param>
        event EventHandler<EventArgs> Completed;
    }
}